home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1996 / MacHack 1996.toast / Hacks / Hacks ’90 / DataStack Filer / DataStacks.Def < prev    next >
Text File  |  1995-09-10  |  2KB  |  58 lines

  1. DEFINITION MODULE DataStacks;
  2. (*    Copyright:    © 1990 by Keith Nemitz, all rights reserved. *)
  3. (* all card names are/(must be) pascal strings. *)
  4.  
  5. FROM SYSTEM IMPORT ADDRESS;
  6.  
  7. FROM MacTypes IMPORT OSErr;
  8.  
  9.  
  10. CONST (* errors reported from DataStack calls. *)
  11.     cardSizeTooBig    = 701;
  12.     tooManyCards    = 702;
  13.     indxOutOfRange    = 703;
  14.     notFound            = 704;
  15.     
  16. TYPE DataStack;
  17.  
  18. VAR
  19.     dataStackErr :OSErr;
  20.  
  21. PROCEDURE NewDataStack(cSize,initial,grow:CARDINAL):DataStack;
  22. PROCEDURE DisposeDataStack(stack:DataStack);
  23.  
  24. PROCEDURE LoadDataStack(fRefNum:INTEGER):DataStack;
  25. PROCEDURE DumpDataStack(stack:DataStack; fRefNum:INTEGER):BOOLEAN;
  26.  
  27.  
  28.  
  29. PROCEDURE AddCard(stack:DataStack; data:ADDRESS; name:ARRAY OF CHAR):LONGCARD;
  30.     (* returns ID = 0 if unable. 'data' IS Ptr. *)
  31.     (* returns ID = 0 if grow was zero in call to NewDataStack. *)
  32.     
  33. PROCEDURE RemoveCard(stack:DataStack; indx:CARDINAL; id:LONGCARD);
  34.     (* by ind if not zero, then id unless name is filled *)
  35.  
  36. PROCEDURE GetCardIndx(stack:DataStack; id:LONGCARD; name:ARRAY OF CHAR):CARDINAL;
  37.     (* by id unless name is filled *)
  38. PROCEDURE GetCardID(stack:DataStack; indx:CARDINAL; name:ARRAY OF CHAR):LONGCARD; 
  39.     (* by indx unless name is filled *)
  40. PROCEDURE GetCardName(stack:DataStack; indx:CARDINAL; id:LONGCARD; VAR name:ARRAY OF CHAR);
  41.     (* by indx if not zero, then id unless name is filled *)
  42.  
  43. PROCEDURE SetCardName(stack:DataStack; indx,id:CARDINAL; name:ARRAY OF CHAR);
  44.     (* by indx if not zero, then id. *)
  45. PROCEDURE CountCards(stack:DataStack):CARDINAL;
  46.  
  47. PROCEDURE GetCardByIndx(stack:DataStack; indx:CARDINAL):ADDRESS;
  48. PROCEDURE GetCardByID(stack:DataStack; id:LONGCARD):ADDRESS;
  49. PROCEDURE GetCardByName(stack:DataStack; name:ARRAY OF CHAR):ADDRESS;
  50.  
  51. TYPE DoProc = PROCEDURE(ADDRESS);
  52. (* these routines do not set (or clear) dataStackErr. *)
  53.  
  54. PROCEDURE ForAllCardsDo(stack:DataStack; do:DoProc);
  55. PROCEDURE InIDOrderDo(stack:DataStack; do:DoProc);
  56. PROCEDURE InNameOrderDo(stack:DataStack; do:DoProc);
  57.  
  58. END DataStacks.